/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import java.awt.Graphics;
import java.awt.Image;
import model.Field.Directions;

/**
 * De klasse Part is verantwoordelijk voor: zichzelf TEKENNEN zichzelf
 * VERPLAATSEN
 *
 * Part heeft kennis van zijn uiterlijk of hij beweegbaar is en het veld waar
 * hij zich in bevindt
 *
 * Author Misja, Bob.
 */
public abstract class Part{

    protected boolean movable;
    protected Image appereance;
    protected Field currentField;
    
     public enum AfterMoveConditions {

        MOVED, NOTMOVED, LASTMOVE
    }
     
    /*
     * Lege constuctor deze klasse os abstract 
     * de constructor wordt dus altijd overschreven de de child klasse
     */
    public Part(Image appereance) {
        this.appereance = appereance;
    }

    /*
     * Tekent het Part dit kan een doos, muur speler etc..
     * de methode krijgt mee waarop hij het moet tekennen.
     */
    public void draw(Graphics g) {
        if (this.appereance != null) {
            g.drawImage(appereance, currentField.getxCoordinate(), currentField.getyCoordinate(), null);
        }
    }
    
    public boolean move(Directions direction){
        return false;
    }
   
    /**
     * @return the movable
     */
    public boolean isMovable() {
        return movable;
    }

    /**
     * @param movable the movable to set
     */
    public void setMovable(boolean movable) {
        this.movable = movable;
    }

    /**
     * @return the appereance
     */
    public Image getAppereance() {
        return appereance;
    }

    /**
     * @param appereance the appereance to set
     */
    public void setAppereance(Image appereance) {
        this.appereance = appereance;
    }

    /**
     * @return the currentField
     */
    public Field getCurrentField() {
        return currentField;
    }

    /**
     * @param currentField the currentField to set
     */
    public void setCurrentField(Field currentField) {
        this.currentField = currentField;
        if (currentField != null) {
            if (currentField.getPart() == null) {
                currentField.setPart(this);
            } else if (!this.currentField.getPart().equals(this)) {
                this.currentField.setPart(this);
            }
        }
    }
}
